#!/bin/sh

pid_bloqueante ()
{
	local nice_name="$(basename $1)"
	local pid_file="$PIDDIR/$nice_name.pid" 

	if [ -r "$pid_file" ] && [ '' != "$(cat "$pid_file")" ] ; then
		echo "$(pidof -x "$nice_name" | tr '[:space:]' '\n' | grep "$(cat "$pid_file")")"
	fi
}

bloquear_pid_base ()
{
	local pid_requester="$1"
	local nice_name="$(basename $2)"
	local pid_file="$PIDDIR/$nice_name.pid"
	local pid_blk="$(pid_bloqueante "$nice_name")"

	if [ '' = "$pid_blk" ] ; then
		mkdir -p "$PIDDIR"
		echo -n "$pid_requester" > "$pid_file"
		return 0
	elif [ "$pid_requester" -eq "$pid_blk" ] ; then
		return 0
	else
		echo "El programa $nice_name solo admite una instancia activa."
		echo "$nice_name esta ejecutandose con id de proceso $(cat "$pid_file")."
		exit 1
	fi
}

# --------------------- PRINCIPAL ----------------------
#1: nombre del ejecutable

# verifico argumentos
if [ "$#" -gt 2 ] ; then
	echo "Cantidad de parametros incorrecto. El uso de este script es:"
	echo "  $0 <Comando> [<Id Proceso Invocador>]"
	exit 1
fi

# verifico el entorno
if [ "$INICIO_OK" != "grupo06" ] && [ "$INICIO_ACTIVO" != "grupo06" ] ; then
	echo "ERROR: El ambiente no esta correctamente inicializado."
	echo "       Por favor ejecute InicioY.sh"
	exit 2
fi

bloquear_pid_base "${2:-$PPID}" "$1"
